package gamebook;

import java.util.Date;
import java.util.List;
import persistencia.PEvento;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class Evento {

    public static final int eveXPag = 6;
    private int id;
    private String titulo;
    private String descripcion;
    private Date fecha;
    private boolean especial;
    private UsuarioGenerico usuario;
    private String direccion;
    
    public Evento(){        
    }

    public Evento(int id, String titulo, String descripcion, Date fecha, UsuarioGenerico usuario, String direccion) {
        this.id = id;
        this.titulo = titulo;
        this.descripcion = descripcion;
        this.fecha = fecha;
        this.usuario = usuario;
        this.direccion = direccion;
    }
    
    public Evento(String titulo, String descripcion, Date fecha, UsuarioGenerico usuario, String direccion) {
        this.titulo = titulo;
        this.descripcion = descripcion;
        this.fecha = fecha;
        this.usuario = usuario;
        this.direccion = direccion;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }
        
    public UsuarioGenerico getUsuario() {
        return usuario;
    }

    public void setUsuario(UsuarioGenerico usuario) {
        this.usuario = usuario;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public boolean isEspecial() {
        return especial;
    }

    public void setEspecial(boolean especial) {
        this.especial = especial;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
    
    public static int cuentaEventos(UsuarioGenerico u) throws SQLException{
        int retorno=0;
        retorno = PEvento.cuentaEventos(u);
        return retorno;
    }
    
    public static List<Evento> obtieneEventos(UsuarioGenerico usuario, int inicio, int fin) throws SQLException {
        List<Evento> listEvento=null;
        listEvento = PEvento.selectEventos(usuario,inicio,fin);
        return listEvento;
    }
    
    public static Evento obtieneEventoId(int pId) throws SQLException {
        Evento evento=null;
        evento= PEvento.selectEventoId(pId);
        return evento;                
    }
    
    public boolean nuevoEvento() throws SQLException{        
        return PEvento.nuevoEvento(this);        
    }
    
    /**
     * Devuleve la fecha del mensaje en forma de String con la fecha expresada
     * en formato: "00/mes/0000" donde mes, es el nombre completo del mes en cuestión
     * @return String con la fecha formateada
     */
    public String getFechaString() {
        String[] nombreMes = new String[]{"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"};
        String fechaString;
        Calendar cal = new GregorianCalendar();
        cal.setTime(fecha);
        String dia = Integer.toString(cal.get(Calendar.DAY_OF_MONTH));
        String mes = nombreMes[cal.get(Calendar.MONTH)];
        String año = Integer.toString(cal.get(Calendar.YEAR));
        fechaString = dia + "/" + mes + "/" + año;
        return fechaString;
    }
    
}
